home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 23
/
Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso
/
Aminet
/
dev
/
misc
/
gms_dev.lha
/
GMSDev
/
Source
/
Asm
/
Cards
/
DrawCard.s
< prev
next >
Wrap
Text File
|
1997-12-23
|
5KB
|
213 lines
;-------T-------T------------------------T----------------------------------;
;Draw CardSet
;------------
;Loads a card file and draws a card to screen. Push right mouse
;button to cycle through the available cards in the file.
;
;This demo uses a single buffer only, so things won't look right if the
;card is restored.
MAX_IMAGES = 1 ;1 card being blitted.
INCDIR "GMSDev:Includes/"
INCLUDE "dpkernel/dpkernel.i"
INCLUDE "graphics/cards.i"
INCLUDE "system/modules.i"
SECTION "Demo",CODE
;===========================================================================;
; INITIALISE DEMO
;===========================================================================;
STARTDPK
Start: MOVEM.L A0-A6/D1-D7,-(SP)
move.l DPKBase(pc),a6
lea PictureFile(pc),a0
moveq #ID_PICTURE,d0
CALL Load
move.l d0,Picture
beq .Exit
moveq #ID_SCREEN,d0
CALL Get
move.l d0,Screen
beq .Exit
move.l Picture(pc),a0
move.l Screen(pc),a1
move.l PIC_Bitmap(a0),a2
move.l BMP_Data(a2),GS_MemPtr1(a1)
CALL CopyStructure
move.l Screen(pc),a0
sub.l a1,a1
CALL Init
tst.l d0
beq.s .Exit
;---------------------------------------------------------------------------;
;Initialise the cards module and cardset.
lea CardModTags(pc),a0 ;a0 = Module tags.
sub.l a1,a1 ;a1 = No container.
CALL Init ;>> = Initialise Cards Interface.
tst.l d0 ;d0 = Check for error.
beq.s .Exit ;>> = Error, exit.
move.l d0,a0 ;a0 = Card module.
move.l MOD_ModBase(a0),CardBase ;ma = Store jump table.
lea CardsTag(pc),a0 ;a0 = Taglist object.
move.l Screen(pc),a1 ;a1 = Screen container.
CALL Init ;>> = Initialise the card set.
tst.l d0 ;ma = Save CardSet
beq.s .Exit ;>> = Error, exit.
;---------------------------------------------------------------------------;
;Initialise the restorelist.
lea RestoreTags(pc),a0
move.l Screen(pc),a1 ;a1 = Screen.
CALL Init ;>> = Initialise the restore list.
tst.l d0 ;d0 = Check for errors.
beq.s .Exit ;>> = Error, exit.
;---------------------------------------------------------------------------;
moveq #ID_JOYDATA,d0 ;Get joydata structure for reading
CALL Get ;port 0.
move.l d0,JoyData
beq.s .Exit
move.l d0,a0 ;Initialise the joydata structure.
sub.l a1,a1
CALL Init
tst.l d0
beq.s .Exit
move.l Screen(pc),a0
CALL Display
bsr.s Main
;---------------------------------------------------------------------------;
; EXIT TO DOS
;---------------------------------------------------------------------------;
.Exit move.l DPKBase(pc),a6
move.l JoyData(pc),a0
CALL Free
move.l Restore(pc),a0
CALL Free
move.l CardSet(pc),a0 ;a0 = Card set.
CALL Free ;>> = Free the card.
move.l CardModule(pc),a0
CALL Free
move.l Screen(pc),a0
CALL Free
move.l Picture(pc),a0
CALL Free
MOVEM.L (SP)+,A0-A6/D1-D7
moveq #ERR_OK,d0
rts
;===========================================================================;
; MAIN LOOP
;===========================================================================;
Main:
.loop move.l DPKBase(pc),a6
move.l Restore(pc),a0
CALL Activate
move.l CardSet(pc),a0 ;a0 = Cardset.
CALL Draw ;>> = Draw the card.
move.l SCRBase(pc),a6
CALL scrWaitAVBL
move.l DPKBase(pc),a6
move.l JoyData(pc),a0
CALL Query
move.l JoyData(pc),a0
move.l CardSet(pc),a1
move.l CS_Bob(a1),a1
move.w JD_XChange(a0),d0
add.w d0,BOB_XCoord(a1)
move.w JD_YChange(a0),d0
add.w d0,BOB_YCoord(a1)
move.l JD_Buttons(a0),d0
btst #JB_RMB,d0
beq.s .ChkLMB
moveq #25,d3
move.l SCRBase(pc),a6
.lp CALL scrWaitAVBL
dbra d3,.lp
move.l Cardset(pc),a1
addq.w #1,CS_Card(a1)
move.w CS_AmtCards(a1),d1
cmp.w CS_Card(a1),d1
bgt.s .ChkLMB
clr.w CS_Card(a1)
.ChkLMB move.l JoyData(pc),a0
move.l JD_Buttons(a0),d0
btst #JB_LMB,d0
beq.s .loop
rts
;===========================================================================;
; DATA
;===========================================================================;
CardBase: dc.l 0
Screen: dc.l 0
Picture: dc.l 0
JoyData: dc.l 0
;---------------------------------------------------------------------------;
CardModTags: dc.l TAGS_MODULE
CardModule: dc.l 0
dc.l MODA_Name,CardsName
dc.l MODA_Version,Cards_ModVersion
dc.l MODA_Revision,Cards_ModRevision
dc.l TAGEND
CardsName: dc.b "mod.cards",0
even
;---------------------------------------------------------------------------;
RestoreTags: dc.l TAGS_RESTORE
Restore: dc.l 0
dc.l RSA_Entries,1
dc.l TAGEND
;---------------------------------------------------------------------------;
CardsTag: dc.l TAGS_CARDSET
CardSet: dc.l 0
dc.l CSA_Attrib,BBF_CLIP|BBF_GENMASK|BBF_FILLMASK
dc.l CSA_Source,.file
dc.l TAGEND
.file FILENAME "GMS:Demos/data/Hires16.reko"
;---------------------------------------------------------------------------;
PictureFile: FILENAME "GMS:Demos/data/Background16.iff"
;===========================================================================;
ProgName: dc.b "Draw Card",0
ProgAuthor: dc.b "Paul Manias",0
ProgDate: dc.b "15 December 1997",0
ProgCopyright: dc.b "DreamWorld Productions (c) 1996-1997. Freely distributable.",0
ProgShort: dc.b "Simple card demonstration.",0
even